home *** CD-ROM | disk | FTP | other *** search
- /* まだまだ動かないけど、ディレクトリ移動は未サポートだけど、形にはなったバージョン(でもこういう形には10月からなっていたんだ。ぐすん。SYSTEM関数がうまく動かないんだよ~。98ではきちんとコンパイル出来るのに)V.0.1 92/12/30 wed */
-
- /* ひゃっほ~!動いたよ~ん。やったー!!!すげぇ~。 V.1.00 93/1/10 SUN */
- /* ちょっとした手直し・・・・ V.1.02 93/2/04 TUE */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- void if2_check(char f_name[], char drv[]);
- void if2_exec(char if2_file[], char f_name[]);
-
- void main( int argc, char *argv[] )
- {
- char f_name[32],drv[16];
-
- if ( !( argc == 2 || argc == 3))
- {
- printf ("Usage : IF2 [op.] data_file_name.???\n");
- exit(1);
- }
-
- if ( argc == 3)
- {
- strcpy(drv,argv[1]);
- sscanf(argv[2],"%32s",f_name); /* argv[2] からファイル名を取得 */
- }
- else if ( argc == 2)
- {
- strcpy(drv,"D:");
- sscanf(argv[1],"%32s",f_name); /* argv[1] からファイル名を取得 */
- }
-
- if2_check(f_name,drv);
- }
-
- void if2_check(char f_name[], char drv[])
- {
- int n;
- char if2_file[128];
- FILE *tmpstr;
- char ex_1[4],ex_2[4]; /* 拡張子用の配列 */
- for( n =0; n <= 31; n++) /* 入力ファイルの拡張子の取得 */
- {
- if (f_name[n] == '.')
- {
- sscanf(f_name+n+1,"%3s",ex_1);
- break;
- }
- }
-
- strcat(drv,"\\TMENU.IF2");
-
- if ((tmpstr = fopen(drv,"r")) == NULL)
- {
- printf("ファイルが開けへんかったわ。ごめんねぇ。\n");
- exit(1);
- }
-
- for (; fgets(if2_file,128,tmpstr);)
- {
- sscanf(if2_file,"%3s",ex_2); /* IF2からの拡張子の取得 */
- if ( 0 == stricmp(ex_1,ex_2)) /*拡張子の比較 大文字小文字の区別なし*/
- {
- fclose(tmpstr);
- if2_exec(if2_file,f_name);
- break;
- }
- else
- continue;
- }
- }
-
- void if2_exec(char if2_file[], char f_name[])
- {
- int i = 0,f,n;
- char buff[128],tmp[128] = "RUN386.EXE ";
-
- for ( i=10, f=0; '\n' != if2_file[i]; i++, f++)
- buff[f] = if2_file[i];
-
- buff[f] = ' '; /* ファイル名の連結がうまくいくおまじない。 */
- buff[f+1] = '\0'; /* ナル文字の追加。 f+n+1 が buff の最後*/
-
- printf("%s\n",strcat(buff,f_name)); /*ファイル名の付加*/
-
- if ( if2_file[5] == '0') /* EXE,COM,BAT のチエック */
- {
- strcat(tmp,buff); /* RUN386 をつける。 */
- system(tmp); /* 起動するはず・・・ */
- }
-
- else if( if2_file[5] == '1') /* こちらがリアルモード用の処理 */
- {
- /* CONSOLE.EXE や ORICON.EXE を抜く */
- for ( i = 10;; i++)
- {
- if ( buff[i] == ' ' && buff[i+2] == ':')
- {
- for( n = i+1, f = 0; buff[n] != '\0'; n++, f++)
- tmp[f] = buff[n];
- tmp[f] = '\0';
- break;
- }
- }
- printf("%s\n",tmp);
- system(tmp);
- }
- }
-
-